Communication systems allow users to communicate with each other over a communication network e.g. by conducting a communication event over the network. The network may be, for example, the Internet or public switched telephone network (PSTN). During a call, audio and/or video signals can be transmitted between nodes of the network, thereby allowing users to transmit and receive audio data (such as speech) and/or video data (such as webcam video) to each other in a communication session over the communication network.
Such communication systems include Voice or Video over Internet protocol (VoIP) systems. To use a VoIP system, a user installs and executes client software on a user device. The client software sets up VoIP connections as well as providing other functions such as registration and user authentication. In addition to voice communication, the client may also set up connections for communication events, for instant messaging (“IM”), screen sharing, or whiteboard sessions.
Data of the communication event may be encapsulated in a data stream. That is, a stream of data packets, which can be transmitted as they are generated e.g. in real time, such that there is only a short delay (e.g. about two seconds or less) between data of the stream being generated at a transmitting device and received at a receiving device. In other words, earlier generated data packets of the stream can be transmitted before later generated data packets of the stream have been generated. Different types of data may be embodied in different, separate streams, for example audio data may be embodied in an audio data stream (that is, encapsulated in audio data packets of the audio stream), separate and different from a video data stream embodying video data (that is, encapsulated in video data packets of the video stream). In a call, additional streams may also be generated at the transmitting device, such as a control data stream; and/or additional video data stream(s) e.g. there may be a call video data stream for call video captured using a camera(s) of the transiting device, a screen sharing video data stream for screen sharing video data, a whiteboard video data stream for whiteboard video data etc. A data stream may, for example, be identified by a stream identifier, e.g. included in the headers of the data packets of that stream; and/or they separate data streams may be distinguished from one another in the way they are generated and managed at the transmitting device. In order to transmit multiple streams to the receiving device simultaneously, they may be multiplexed onto a channel of the network between the transmitting device and the receiving device, for example using time division multiplexing.